#ifndef _MAGIC_HPP_
#define	_MAGIC_HPP_
/*******************************************************************************
 ** Name: magic.cpp                                                       **
 ** Description: WorldObject-derived container objects                        **
 **                                                                           **
 ** Open Source Initiative (OSI) Approved License                             **
 **                                                                           **
 ** The contents of this file are subject to the terms of the                 **
 ** Common Development and Distribution License, Version 1.0 only             **
 ** (the "License").  You may not use this file except in compliance          **
 ** with the License.                                                         **
 **                                                                           **
 ** You can find a copy of the license in the LICENSE file within             **
 ** this distribution or at $WIKI/display/GOVT/License-software.              **
 ** Software distributed under the License is distributed on an "AS IS"       **
 ** basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.           **
 ** See the License for the specific language governing permissions           **
 ** and limitations under the License.                                        **
 **                                                                           **
 ** When distributing Covered Code, include this CDDL header in each          **
 ** file and include the License file at $GAME_DIR/LICENSE.                   **
 ** If applicable, add the following below this header, with the indicated    **
 ** fields enclosed by brackets "[]" replaced with your own identifying       **
 ** information: Portions Copyright [yyyy] [name of copyright owner]          **
 **                                                                           **
 **                                                                           **
 ** Copyright (c) 2009-2012  Barry Gian James <gian@gamingods.net>            **
 ** All rights reserved.                                                      **
 ******************************************************************************/
// Created on March 17, 2010, 8:15 PM
// Modified $Date$ by $Author$
#define magic_hpp_ID   "$Id$"

#include "common.hpp"
#include "object.hpp"
#include "action.hpp"

//////////////////////////////[ Spells
enum class Watchtower { North, South, East, West };
enum class WatchtowerElement { Earth, Fire, Air, Water };
enum class Aethyr {
    tex, rii, bag, zaa, des, vti, nia,
    tor, lin, asp, khr, pop, zen, tan, lea, oxo, vta, zim, loe, hah, zak,
    zip, zid, deo, maz, lit, paz, zom, arn, lil
};
enum class Component { Verbal=0x01, Somatic=0x02, Material=0x04, Focus=0x08 };
enum class MagickType { Spell, Poltice, Herb, Potion, Catalyst, Tome };

//! Outlines the attributes of a spell
class Spell : public WorldObject
{
public:
//    Spell();
    Spell(const std::string & n, const std::string & t);
    
private:
    Aethyr      _aethyr;
    Watchtower  _tower;
    ActionType  _castTime;
    MagickType       _mtype;
    Component   _components;
};

// Alchemy/Potions

// Items

//////////////////////////////[ Herbology
//! Lovely little herbs for use in poltices, potions, or raw
struct Herb : public WorldObject
{
//    Herb();
    Herb(const std::string & n, const std::string & t);
    Locale          locality;       //!< where is it found?
    int             complexity;     //!< how rare, how difficult to use
    MagickType           mtype;
};

//! A poltice, mostly raw herb in a pastey consistency
class Poltice : public WorldObject
{
public:
//    Poltice();
    Poltice(const std::string &n, const std::string & t);

private:

    MagickType       mtype;
};

//! The unforgettable potion class
class Potion : public WorldObject
{
public:
    Potion(const std::string &n, const std::string & t);

private:

};

#endif	/* _MAGIC_HPP_ */

